'''
   author:黎作文
   date:2021/11/24 9:52
   project:流程控制作业提交10-29-黎作文.py
'''
#1、输入数字n，输出n天前的日期（time或者datatime模块）
# def dtime():
#     import datetime
#
#     temp_date = datetime.datetime.now()  # 获取当前时间 年月日时分秒
#     n=int(input("您想获取多少天前的日期："))
#     date_n = (temp_date + datetime.timedelta(days=-n)).strftime("%Y-%m-%d")
#     print(f"{n}天前的日期为: " , date_n)
#
#     if __name__=="__main__":
#         date1 = (temp_date + datetime.timedelta(days=-1)).strftime("%Y-%m-%d")  # 获取当前日期的前一天日期
#         date2 = (temp_date + datetime.timedelta(days=-2)).strftime("%Y-%m-%d")  # 获取当前日期的前两天日期
#         date3 = (temp_date + datetime.timedelta(days=-3)).strftime("%Y-%m-%d")  # 获取当前日期的前三天日期
#         print("一天前的日期 date1: " , date1)
#         print("两天前的日期 date2: " , date2)
#         print("三天前的日期 date3: " , date3)
# dtime()

#2、输出指定文件夹下有哪些文件或文件夹（实现ls命令， os）
import os
# for filename in os.listdir(r'E:\pycharm\pycharm2020.3\pycharm2020.3'):
#     print(filename)
# print(os.listdir(r'E:\pycharm\pycharm2020.3\pycharm2020.3'))

#3、列表去重，并且从小到大排序
# lst1=[11,3,75,24,36,11,37,24,75]
# set1=set(lst1)
# print(set1)
# lst2=list(set1)
# lst2.sort()
# print(lst2)

#4、如何在一个函数内部修改全局变量

# a=1
# def func1():
#     global a
#     a=3
# func1()
# print(a)

#5、如何跨模块共享全局变量


#6、python的基本数据类型有哪些？
# 答：string、list、tuple、dict、set

#7、python中生成随机整数（1-10），随机小数（1-10），随机小数（0-1）的方法
# import random
# a=random.randint(1,10)   #随机整数(1-10)
# print(a)
# b=random.random()        #随机小数（1~10)
# print(b)
# print( random.uniform(1.0,10.0) )     # 产生  1.0 到 10.0 之间的随机浮点数，区间可以不是整数

#8、python中哪些是可变数据类型，哪些是不可变数据类型
# 答：不可变数据类型：整型、字符串和元组
#    可变数据类型：list（列表）、dict（字典）、set（集合，不常用）

#9、a+=1与a=a+1有什么区别
# 答：对于可变对象，a += 1 直接在原内存地址上操作a = a + 1开辟新的内存操作
#    对于不可变对象，a += 1和a = a + 1都是在新开辟的空间操作



#10、什么是pep8？说出5点它的标准
# 答：PEP是Python Enhancement Proposal的缩写，通常翻译为“Python增强提案”。
#    每个PEP都是一份为Python社区提供的指导Python往更好的方向发展的技术文档，
#    其中的第8号增强提案（PEP 8）是针对Python语言编订的代码风格指南。
#     1.空格的使用
        # 使用空格来表示缩进而不要用制表符（Tab）
        # 每行的字符数不要超过79个字符，如果表达式因太长而占据了多行，除了首行之外的其余各行都应该在正常的缩进宽度上再加上4个空格。
        # 函数和类的定义，代码前后都要用两个空行进行分隔。
        # 二元运算符的左右两侧应该保留一个空格，而且只要一个空格就好
#     2.标识符命名
        # 变量、函数和属性应该使用小写字母来拼写，如果有多个单词就使用下划线进行连接。
        # 类中受保护的实例属性，应该以一个下划线开头。
        # 类中私有的实例属性，应该以两个下划线开头。
        # 类和异常的命名，应该每个单词首字母大写。
        # 模块级别的常量，应该采用全大写字母，如果有多个单词就用下划线进行连接。
        # 类的实例方法，应该把第一个参数命名为self以表示对象自身。
        # 类的类方法，应该把第一个参数命名为cls以表示该类自身。
#     3.表达式和语句
        # 采用内联形式的否定词，而不要把否定词放在整个表达式的前面。例如if a is not b就比if not a is b更容易让人理解。
        # 不要用检查长度的方式来判断字符串、列表等是否为None或者没有元素，应该用if not x这样的写法来检查它。
        # 就算if分支、for循环、except异常捕获等中只有一行代码，也不要将代码和if、for、except等写在一起，分开写才会让代码更清晰。
        # import语句总是放在文件开头的地方。
        # 引入模块的时候，from math import sqrt比import math更好。
        # 如果有多个import语句，应该将其分为三部分，从上到下分别是Python标准模块、第三方模块和自定义模块，每个部分内部应该按照模块名称的字母表顺序来排列。

#11、给定一个字符串，找出字符串第一个重复的字符
# str=input("请输入一个字符串：")
# for i in str:
#     if str.count(i)>1:
#         print(i)
#         break

#12、简述深拷贝与浅拷贝
# 答：浅拷贝只会拷贝第一层对象的地址（引用）
#    深拷贝就是拷贝每一层的数据（使用copy模块的deepcopy函数）

#13、简述python内存机制
# 答：以引用计数为主，分代回收和标记清除为主的垃圾回收为辅，以及对小整数进行缓存和简单字符串驻留的内存池机制

#14、使用python实现冒泡排序，快速排序
# 冒泡排序
# def bubbleSort(arr):
#     n = len(arr)
#
#     # 遍历所有数组元素
#     for i in range(n):
#
#         # Last i elements are already in place
#         for j in range(0, n - i - 1):
#
#             if arr[j] > arr[j + 1]:
#                 arr[j], arr[j + 1] = arr[j + 1], arr[j]
#
#     print(arr)
# arr = [64, 34, 25, 12, 22, 11, 90]
#
# bubbleSort(arr)

# 快速排序
# def quick_sort(arr):
#      if len(arr) < 2:
#          return arr
# # 选取基准，随便选哪个都可以，选中间的便于理解
#      mid = arr[len(arr) // 2]
# # 定义基准值左右两个数列
#      left = []
#      right = []
#     # 从原始数组中移除基准值
#      arr.remove(mid)
#      for item in arr:
#     # 大于基准值放右边
#         if item >= mid:
#             right.append(item)
#         else:
#         # 小于基准值放左边
#             left.append(item)
# # 使用迭代进行比较
#      return quick_sort(left) + [mid] + quick_sort(right)
#
# arr = [64, 34, 25, 12, 22, 11, 90]
# print(quick_sort(arr))

#15、验证一个字符串是否属于回文（从左到右，从右到左都是一样）
str=input("请输入一个字符串：")
length=len(str)
for i in range(length):
    j=-i-1
    if str[i]==str[j]:
        continue
    else:
        print("不是回文")
        break
else:
    print("是回文")